package cc.customer.cRound.service.Impl;

import cc.customer.cRound.dao.CRoundConfigMapper;
import cc.customer.cRound.dao.CRoundGradeMapper;
import cc.customer.cRound.domain.CRoundConfig;
import cc.customer.cRound.domain.CRoundGrade;
import cc.customer.cRound.service.CRoundGradeService;
import cc.customer.common.domain.ResponseBo;
import cc.customer.common.service.impl.BaseService;
import cc.customer.common.utils.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class CRoundGradeServiceImpl extends BaseService<CRoundGrade> implements CRoundGradeService {
    private static final Logger logger= LoggerFactory.getLogger(CRoundGradeServiceImpl.class);
    @Autowired
    private CRoundConfigMapper configMapper;

    @Autowired
    private CRoundGradeMapper gradeMapper;

//    public ResponseBo editRoundGrade(CRoundConfig config, CRoundGrade grade){
//        try {
//            /**定义三个需要操作得集合**/
//            List<CRoundConfig> addlist = new ArrayList<>();//新增
//            List<CRoundConfig> addupdate = new ArrayList<>();//更新
//            List<String> adddelt = new ArrayList<>();//删除
//
//
//            /**1：查询当前模板得配置项目**/
//            Example example = new Example(CRoundConfig.class);
//            example.createCriteria().andEqualTo("cPid",config.getcPid()).andEqualTo("cType",config.getcType());
//            List<CRoundConfig> list = configMapper.selectByExample(example);
//
//            /**2: 解析配置得模板**/
//            String []iduuids = config.getcUuid().split(","); //uuid
//            List<String> uuids = Arrays.asList(iduuids);
//
//            String []deptids = config.getcDeptid().split(",");//部门id
//            List<String> deptd = Arrays.asList(deptids);
//
//            String []orders = config.getcOrder().split(","); //排序
//            List<String> order = Arrays.asList(orders);
//
//            String[] gradeids = grade.getgUuid().split(","); //轮次配置
//            List<String> gradeidl = Arrays.asList(gradeids);
//
//            String[] gradenums = grade.getgCount().split(",");//轮次数量
//            List<String> grades = Arrays.asList(gradenums);
//
//            //比较数据
//            Boolean istrue = (uuids.size() == deptd.size());
//            Boolean isTure1 = (deptd.size() == order.size());
//            Boolean isTure2 = (gradeidl.size() == grades.size());
//            if (!istrue || !isTure1 || !isTure2){
//                return ResponseBo.error("获取数据失败");
//            }
//            //循环数据 判断有没有新模板，有没有删除老模板
//            for(int i=0;i<uuids.size();i++) {
//                String ids = uuids.get(i);
//
//                //判断uuid是不是新增
//                if("1".equals(ids)){
//                    //新增
//                    CRoundConfig cRoundConfig = new CRoundConfig();
//                    cRoundConfig.setcDeptid(deptd.get(i));
//                    cRoundConfig.setcOrder(order.get(i));
//                    cRoundConfig.setcPid(config.getcPid());
//                    cRoundConfig.setcType(config.getcType());
//                    cRoundConfig.setcUuid(Utils.getUUID());
//                    addlist.add(cRoundConfig);
//                }else{
//                    //更新
//                    for(CRoundConfig roundConfig:list){
//                        if(roundConfig.getcUuid().equals(ids)){
//                            roundConfig.setcOrder(order.get(i));
//                            addupdate.add(roundConfig);
//                        }
//                    }
//                }
//            }
//            //删除
//            for(CRoundConfig e : list){
//                Boolean flag= false;
//                for(int j=0;j<uuids.size();j++){
//                    String uuidss = uuids.get(j);
//                    if(uuidss.equals(e.getcUuid())){
//                        flag = true;
//                        break;
//                    }
//                }
//                if (!flag){
//                    adddelt.add(e.getcUuid()+"");
//                }
//            }
//
//            //执行操作
//            logger.info("新增得数目："+addlist.size());
//            //新增
//            if (!addlist.isEmpty()){
//                configMapper.insertList(addlist);
//            }
//            //更新
//            logger.info("更新得数目："+addupdate.size());
//            if(!addupdate.isEmpty()){
//                configMapper.updateBatchCRoundConfig(addupdate,config.getcType());
//            }
//            //删除
//            logger.info("删除得数目："+adddelt.size());
//            if (!adddelt.isEmpty()){
//                for(String uuid:adddelt){
//                    Example example1 = new Example(CRoundConfig.class);
//                    example1.createCriteria().andEqualTo("cUuid",uuid);
//                    configMapper.deleteByExample(example1);
//                }
//            }
//
//
//            //判断等级新增或更新
//            Example example1 = new Example(CRoundGrade.class);
//            example1.createCriteria().andEqualTo("gPuuid",config.getcPid());
//            List<CRoundGrade> gradeList = gradeMapper.selectByExample(example1);
//
//            List<CRoundGrade> ngrade = new ArrayList<>();
//            List<CRoundGrade> upgrade = new ArrayList<>();
//            for(int i=0;i<gradeidl.size();i++){
//                String gid = gradeidl.get(i);
//
//                //更新
//                if(gradeList.size()>0){
//                    for(CRoundGrade grade1:gradeList){
//                        if(grade1.getgUuid().equals(gid)){
//                            grade1.setgCount(grades.get(i));
//                            grade1.setgPuuid(config.getcPid());
//                            upgrade.add(grade1);
//                        }
//                    }
//                }else{
//                    //新增
//                    CRoundGrade grade2 = new CRoundGrade();
//                    grade2.setgPuuid(grade.getgPuuid());
//                    grade2.setgUuid(gid);
//                    grade2.setgCount(grades.get(i));
//                    ngrade.add(grade2);
//                }
//            }
//            //新增
//            if(!ngrade.isEmpty()){
//                gradeMapper.insertList(ngrade);
//            }
//            //更新
//            if(!upgrade.isEmpty()){
//                gradeMapper.batchUpdateGrade(upgrade);
//            }
//
//
//            return ResponseBo.ok("操作成功");
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//        return ResponseBo.error("操作失败");
//    }

}
